# 函数
# 格式 def 函数名():

# return
def buy():
    return 'hello','world'
print(buy(),type(buy()))

# 返回值的三种情况
# 1.一个返回值没有 None
# 2. 有一个返回值
# 3.多个返回值，以元组的形式返回调用

# 参数
# 1.形参、实参
# 2.必备参数：传递和定义参数的顺序及个数必须一致


# 默认参数
# 为参数提供默认值，调用函数时可不传该默认参数的值
# 所有的位置参数必须出现在默认参数前，包括函数定义和调用
# 格式:def func(a=1):

def funb(b,a = 8):
    print(a)

funb(1)
funb(100)

# 可变参数
# 传入的值和数量可以改变的 可以传多个，也可以不传
# def func(*args)
# 以元组形式接受

def func(*args):
    print(args,type(args))
func(1)

# 关键字参数

def fund(**kwargs):
    print(kwargs,type(kwargs))

fund()
fund(name='hello',age=20)

def fune(*args, **kwargs):
    print(args,kwargs)
fune(1,name='hello',age=20)